Category - Software Projects
Lacrimae rerum. Memento mori. Memento vivere.
Data Science
- Exploratory Data Analysis - 3-Factor Asset Pricing AnalysisBased on their rational definitions, factors can be seen as proxies for the characteristics of equities and other assets which explain performance and provide premiums due to a relative risk. With the Fama-French 3-Factor Model for asset pricing, these risk factors consider aspects of market beta, market capitalization, and book-to-market equity (operating profitability, change in investment assets, and recent performance momentum were excluded from this analysis). The data is accessed from the online library provided by Kenneth French, which highlights returns relevant to the research into asset pricing models from Eugene Fama and Kenneth French. As accessing the data through the online library is segmented by type, the overall data was iteratively collected and stored as variables in a PKL file or as sheets in an XLSX file for all relevant types. An exploratory analysis was performed to show the distributions, time-varying characteristics, and interactions affecting realized returns of the data. The primary packages used in the project include Python with Numpy, Pandas, Matplotlib, Seaborn, Urllib, and Pickle.
- Exploratory Data Analysis - 5-Factor Asset Pricing ComponentsSeparated into components, factors can be seen as proxies for characteristics of equities and other assets which explain performance and provide premiums due to a relative risk. With the Fama-French 5-Factor Model for asset pricing, these risk factors consider aspects of market beta, market capitalization, book-to-market equity, operating profitability, and change in investment assets (recent performance momentum was excluded from this analysis). The data is accessed from the online library provided by Kenneth French, which highlights returns relevant to the research into asset pricing models from Eugene Fama and Kenneth French. As accessing the data through the online library is segmented by type, the overall data was iteratively collected and stored as variables in a PKL file or as sheets in an XLSX file for all relevant types. An exploratory analysis was performed to show the distributions, time-varying characteristics, and correlations of the data. The primary packages used in the project include Python with Numpy, Pandas, Matplotlib, Seaborn, Urllib, and Pickle.
- Exploratory Data Analysis - 5-Factor Asset Pricing PortfoliosEvaluating the varying effects on portfolios with target segmentations, factors can be seen as proxies for the characteristics of equities and other assets which explain performance and provide premiums due to a relative risk. With the Fama-French 5-Factor Model for asset pricing, these risk factors consider aspects of market beta, market capitalization, book-to-market equity, operating profitability, and change in investment assets (recent performance momentum was excluded from this analysis). The data is accessed from the online library provided by Kenneth French, which highlights returns relevant to the research into asset pricing models from Eugene Fama and Kenneth French. As accessing the data through the online library is segmented by type, the overall data was iteratively collected and stored as variables in a PKL file or as sheets in an XLSX file for all relevant types. An exploratory analysis was performed to show the distributions, time-varying characteristics, and interactions affecting realized returns of the data. The primary packages used in the project include Python with Numpy, Pandas, Matplotlib, Seaborn, Urllib, and Pickle.
- Exploratory Data Analysis - Small Annual Return DifferencesA small improvement or deterioration in annual return can make a significant difference over long time periods. As a realistic example, this concept can be applied to retirement accounts in South Africa. Despite the almost universal recommendation from the majority of financial advisors and media personalities, a retirement account may not be the most effective option for investments in South Africa. Unfortunately and disappointingly, it seems that these financial advisors and media personalities often make generalized statements based on their anecdotal opinions and without evidence to back up their statements (although this is not unexpected from the disreputable behaviour of the majority of the financial industry seeking to enrich themselves rather than their clients, while a very small minority continue to try their best to maintain a fiduciary duty). With consideration of the evidence for whether retirement accounts are rational in South Africa, it becomes apparent that, in most circumstance, a retirement account should not be recommended for the majority of people, especially for young people with a long time horizon who are uncertain of their future goals.
Computer Vision
Segmentation - Basic Image Manipulation
Segmentation - Template Matching Techniques
...
- System Configuration - Configuration For Debian With KDEAs a personal preference, Debian is used in combination with KDE for a stable, reliable, and configurable experience. Debian Testing is specifically used for packages which are updated frequently while remaining secure without the risk of accidentally breaking the system. The notable applications (and their relevant add-ons and extensions) installed on the system include Firefox, Inkscape, GIMP, Blender, VLC, VSCodium, Foliate, and several other useful packages. The other distributions which have been considered before settling on Debian include Ubuntu, KDE Neon, Solus, Ubuntu Budgie, Pop!_OS, and Manjaro (still need to try distributions using Fedora Linux and OpenSUSE), while the other desktop environments which have been considered before settling on KDE include GNOME, Budgie, and XFCE.
- System Configuration - Visual Studio Code For DevelopmentVisual Studio Code is a source-code editor made by Microsoft with the Electron Framework (for Node.js web applications running on the Blink layout engine). Some of the prominent features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git. It can be used for a variety of programming languages, including C, C#, C++, Fortran, Go, Java, PHP, JavaScript, Node.js, HTML, CSS, Python, Rust, Julia, and MATLAB. Additional extensions and functionality can be installed through the VS Code Marketplace. An alternative to Visual Studio Code is VSCodium, which is a community-driven and freely-licensed binary distribution of the open-source repository from which Visual Studio Code is also built. VSCodium avoids the proprietary licence which is applied to Visual Studio Code after it is built and any telemetry or tracking which may be sent to Microsoft, but an alternate central repository needs to be used for extensions, such as Open VSX which acts as an open-source registry for extensions.
- System Configuration - Miscellaneous Tools And Scripts...
- Home Server Setup - Syncthing File Synchronization...
- Home Server Setup - Pi-Hole Network-Wide Protection...
- Home Server Setup - AdGuard Network-Wide Protection...
- Home Server Setup - Git Repository Configuration...
Website Development
- Static Websites - Eleventy Custom Configuration...
- Static Websites - Hosting Deloyment To GitLab...
- Static Websites - Progressive Web Applications...
- Static Websites - Webpage Password Protection...
Application Development
- Finances And Investing - Multi-Currency Portfolio TrackerWhen considering a holistic view of finances, it can be useful to track a portfolio of securities with consideration for and consolidation of multiple account types. Moreover, as a currency is simply a unit of measure, the program is specifically designed to be compatible with a range of reference currencies (which are easily extendible), use any of these currencies when providing inputs for cash and investments, and provide aggregated results in any of these currencies. The project initially began as a spreadsheet, but shifted into an object-oriented program for more complex operations. The next steps include adding forecasting capabilities for planning and then safe withdrawal rate simulations for retirement. The primary packages used in the project include Python with Numpy, Pandas, Plotly, ... , and Pickle. It should be noted that all of the data presented is artificial for a demonstration of the functionality.
- Basic JavaScript App - Simple SlideshowsA slideshow allows for transitioning between graphics to display those within a collection with controls for the location within the set through forward and backward arrows or position indicators. This is commonly used for presentations and can help with compact formatting to reduce the space occupied by similar or related graphics. Although usually used for images or videos, these graphics may include any elements which are designed to rotate in a carousel. It can also be useful to have multiple slideshows for display on a single webpage, as well as generalizing the implementation for each slideshow to operate independently without specific configuration (most other examples only allow for a single slideshow or are specifically set for multiple slideshows with direct dependence on the arrangement).
- Basic JavaScript App - Noughts And CrossesNoughts And Crosses, also known as Tic-Tac-Toe, is a simple game with two players taking turns to mark the spaces in a 3-by-3 grid with X's and O's. The player who succeeds in placing 3 of their marks in a horizontal, vertical, or diagonal row is the winner - if neither of the players succeeds, then the game is drawn. This project is a basic implementation of the game with manual input from each player until the game is finished or reset to the original board.
- Basic JavaScript App - Pomodoro TimerPomodoro Timers are designed to be used as part of the Pomodoro Technique, which is a time management method aimed at breaking work into set intervals separated by breaks (each interval is known as a Pomodoro (which means "tomato" in Italian)). The overall purpose for time management is to reduce inefficiencies and effects of internal and external interruptions of focus. Traditionally, when it was developed in the late 1980s by Francesco Cirillo, a mechanical kitchen timer was used with the intervals having a length of 25 minutes and short breaks of 5 minutes. This project is a basic implementation of a Pomodoro Timer which can be customized with a variable length for intervals and breaks.
- Basic JavaScript App - So Cards CarouselSo Cards are a curated set of deep conversation starters to help skip the small talk and spark a genuine connection. This project is a basic implementation to imitate the way in which So Cards are used, but it is not related to the actual creative rights of So Cards. In other words, although this idea was inspired by So Cards, it is generally applicable and intended to be relevant for any deck of cards or collection of consecutive prompts. Without any of the additional intricacies, this is essentially a simple carousel or slideshow within the selected deck or collection, where the navigation allows for transitioning forwards, backwards, to a specific input, or to a random index. The game can be quite inspirational.
- Basic JavaScript App - Compound Returns CalculatorA compounded return refers to the process where the earnings generated by an investment are reinvested and themselves generate additional earnings over time, which leads to exponential growth due to the effect of returns on both the initial principal and accumulated earnings. Depending on what is being compounded and given enough time, this has been described the "most powerful force in the universe" (often attributed to Albert Einstein). At the end of the day, those who understand it will earn it and those who do not understand it will pay it (although it is not a zero-sum game).
- Basic JavaScript App - Multi-Stage Fitness Test...
Miscellaneous Ideas
- Smart Watches - Custom Watch Faces For Wear OSAfter struggling to find a watch face which was satisfactory, several watch faces were personally developed for the desired appearance and functionality using Watch Face Studio from Samsung. The relevant criteria include creating an aesthetic and minimal design (with a focus on symmetry), disguising the bezel to fit the design (and case), considering the impact on battery life, providing shortcuts for launching applications (such as stopwatch and maps), and showing an overview of important metrics (such as step count and heart rate). If designed successfully, almost all of the common actions should be visible or easily accessible directly from the watch face. Although the Samsung Watch 4 was specifically considered, the watch faces are compatible with any smartwatch running Wear OS 3 (although more suitable for round watch faces).